package com.itlong.cloud.commons.service;

import com.itlong.cloud.POJO.PO.DeviceBusinessChangeLogPO;
import org.apache.ibatis.annotations.Param;

import java.io.IOException;
import java.util.List;
import java.util.Map;

/**
 * <desc>
 *      云对讲响应硬件结果业务处理接口
 * </desc>
 *
 * @createDate 2017/12/04
 */
public interface ICloudTalkPushCloudIntercomChangeLogService {
    /**
     * <desc>
     *      任务调度执行同步业务指令至响应硬件结果表
     * </desc>
     *
     * @author Jiaqi.X
     * @createDate 2017/12/04
     */
    void timeTaskPushCloudIntercom() throws Exception;

    /**
     * <desc>
     *      云对讲单个设备物理地址变更
     * </desc>
     *
     * @author Qiang.S
     * @createDate 2019/07/22
     */
    void setPushDeviceOne(List<DeviceBusinessChangeLogPO> business) throws Exception;

    /**
     * <desc>
     *      全量更新
     * </desc>
     *
     * @author Qiang.S
     * @createDate 2019/07/22
     */
    void updateFull(String projectId,Integer type) throws Exception;

    /**
     * <desc>
     *      处理推送设备响应房间信息
     * </desc>
     *
     * @author Qiang.S
     * @createDate 2019/07/22
     */
    void setPushRoom(List<DeviceBusinessChangeLogPO> business) throws Exception;

    /**
     * <desc>
     *      处理推送设备响应多媒体信息
     * </desc>
     *
     * @author Qiang.S
     * @createDate 2019/07/22
     */
    void setPushMedia(List<DeviceBusinessChangeLogPO> business) throws Exception;

    /**
     * <desc>
     *      处理推送硬件响应设备信息
     * </desc>
     *
     * @author Qiang.S
     * @createDate 2019/07/22
     */
    void setPushDevice(List<DeviceBusinessChangeLogPO> business) throws Exception;

    /**
     * <desc>
     *      处理推送硬件响应用户信息
     * </desc>
     *
     * @author Qiang.S
     * @createDate 2019/07/22
     */
    void setPushUser(List<DeviceBusinessChangeLogPO> business, Integer type) throws Exception;

    /**
     * <desc>
     *      处理推送硬件响应项目信息
     * </desc>
     *
     * @author Qiang.S
     * @createDate 2019/07/22
     */
    void setPushProject(List<DeviceBusinessChangeLogPO> business) throws Exception;

    /**
     * <desc>
     *      处理推送人脸库变更信息
     * </desc>
     *
     * @author Qiang.S
     * @createDate 2019/07/22
     */
    void setPushFaceInfo(List<DeviceBusinessChangeLogPO> business) throws Exception;

    /**
     * <desc>
     *      处理推送单个设备人脸信息配置变更
     * </desc>
     *
     * @author Qiang.S
     * @createDate 2019/07/22
     */
    void setPushDeviceFaceInfo(List<DeviceBusinessChangeLogPO> business) throws Exception;

    /**
     * <desc>
     *      黑名单信息变更
     * </desc>
     *
     * @param business
     * @author Jiaqi.X
     * @createDate 2019/10/15
     */
    void setBlackList(List<DeviceBusinessChangeLogPO> business) throws IOException;

    /**
     * <desc>
     *      处理推送硬件临时权限信息
     * </desc>
     *
     * @author Jiaqi.X
     * @createDate 2017/12/05
     */
    void setPushTemp(List<DeviceBusinessChangeLogPO> business);

    /**
     *<desc>
     *  根据设备唯一标识符查询电梯正背门信息
     *</desc>
     *
     * @Author  chengshican
     * @Date   \ 15:21
     * @Param
     * @Return
     * @Exception
     *
     */
    Map<String,Object> getElevatorByDeviceUnique(@Param("deviceUnique") String deviceUnique);
}
